1. Field of the Invention
Embodiments of the invention described herein pertain to the field of computer systems. More particularly, but not by way of limitation, one or more embodiments of the invention enable a neural network resource sizing apparatus for database applications.
2. Description of the Related Art
There are a number of requirements and/or preferences associated with determining the type of resources, e.g., hardware required to host a particular database application. Implementers and planners generally perform trial and error methods when estimating the processing power, memory and disk resources required to host a given database application. Customers require that hardware is in line with the requirements of the database application. There is no reason for a cluster of super computers to run a given database application if the database application does not require these expensive computing resources. On the other hand, if the computing resources are not of sufficient capacity, then the system will lose performance and may actually fail. For many customers this is unacceptable. The database application implementers are generally not trained in the art of accurately estimating hardware resources and at times over estimate the resources in order to ensure that the database application never fails. This overestimation strategy is not a minimal cost strategy and customers pay more for a given installation than they should in general.
Current methodologies for sizing a given database application do not take into consideration a range of variables such as the number of records, lookups, images, PDF files, BLOBs and the widths of the fields for example. Generally, sizing may be performed by looking at the number of users that will access a system or some other indirect parameter that is not related to the internal metrics of the database application. This results in resource allocation that is not optimized for the database application in use, but is rather a crude, indirect and external guess at the resources that may be needed. Some database application providers furnish their customers with sizing guides which provide static rules that may or may not cover the specific installation at hand. This type of solution is slow to adapt to new observed installation utilization figures since the results must be sent back to the company and incorporated in a new version of the sizing guide. The round trip time for delivering new sizing guides to customers based on feedback is long. Companies involved with developing database applications may alter the application software over time which also may render the sizing guides obsolete. This may happen in one of two ways since the software may become more efficient and may then require fewer resources for operation, or alternatively, may become more “feature rich” which tends to require more resources to operate. Either way, the software changes provide a moving target for the implementers that are responsible for planning resource allocation with the customers. Again, the implementers may overestimate the required hardware resources so that their software application(s) appear to be fast and robust. The separation of software implementers from hardware suppliers thus tends to lead to an inefficiency in the corporate world that costs companies great sums of capital.
Attempts at calculating required resources based on traditional linear methods of correlating input parameters with required resources generally do not work since small variations of one input parameter may drastically change the required resources. For example, existing methods that utilize tables or linear regression do not incorporate learning methods. As such, these solutions are limited in the complexity that they can handle and are hence inaccurate for real world database applications that have many parameters that may be unique to each installation.
For at least the limitations described above there is a need for a neural network resource sizing apparatus for database applications.